package cn.tedu.ba02;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;



@Aspect
public class MyAspect {

    /*@AfterReturning：后置通知
    *   参数：1.value切入点表达式
    *      2.returning自定义的变量，但是要和方法里的形参相同
    *
    * 特点：1.在目标方法执行之后输出
    *      2.能够获取方法的返回值
    *      3.可以修改返回值
    * */

   @AfterReturning(value = "execution(* cn.tedu.ba02.SomeServiceImpl.doOther(..))",returning = "res")
    public String MyAfterReturn(Object res){

        if (res.equals("abcd")){
            //做一些功能
        }else {
            //做其他功能
        }

        if (res!=null){
            res="change";
        }

       return (String) res;
    }




    @AfterReturning(value = "execution(* cn.tedu.ba02.SomeServiceImpl.doOther02(..))",returning = "res")
    public void MyAfterReturn2(Object res){
        if (res.equals("abcd")){
            //做一些功能
        }else {
            //做其他功能
        }

        if (res!=null){
            Student student = new Student();
            student.setName("刘杰");
            student.setAge(21);
            res=student;
        }
        System.out.println("后置通知，在目标方法执行之后的，获得的返回值为："+res);
    }

}
